
#include "./comm.hpp"

extern Log log;


int main()
{
    InitPipe init;
    int shmid = CreateShm();
    char *shmaddr =(char*) shmat(shmid,nullptr,0);//映射到本进程地址空间
    

    //建立管道
    int fd = open(FIFO_FILE, O_RDONLY); // 等待写入方打开之后，自己才会打开文件，向后执行， open 阻塞了！
    if (fd < 0)
    {
        log(Fatal, "error string: %s, error code: %d", strerror(errno), errno);
        exit(FIFO_OPEN_ERR);
    }

    while(true)
    {
    
        char c;
        ssize_t s = read(fd, &c, 1);      //从管道中读  控制等到写端写完 我才能读  否则就会一直堵塞
        if(s == 0) break;
        else if(s < 0) break;
        cout << "client say@ " << shmaddr << endl; //直接访问共享内存



        sleep(1);

    }
    shmdt(shmaddr);                     // shmdt(shmaddr);  🚪断开连接（detach）
    shmctl(shmid, IPC_RMID, nullptr);   // shmctl(shmid, IPC_RMID, nullptr) 💣 删除共享内存（标记删除）
    close(fd);
    return 0;

}
